Spring Cloud Gateway এর সাথে Client-Side Security Integration

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) API Gateway এবং Client-Side Security |
82
82

Spring Cloud Gateway হল একটি API গেটওয়ে, যা ক্লায়েন্ট-সাইড সিকিউরিটি এবং রুটিং টাস্কের জন্য ব্যবহৃত হয়। এটি আপনাকে বিভিন্ন সার্ভিসের উপর লোড ব্যালেন্সিং, সিকিউরিটি এবং রেট লিমিটিং সমর্থন সহ একটি কাস্টম গেটওয়ে সেটআপ করতে দেয়।

এই গেটওয়ে সাধারণত সার্ভিস-মেশ বা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। Spring Cloud Gateway-এ সিকিউরিটি ইন্টিগ্রেশন বিভিন্ন পদ্ধতিতে করা যেতে পারে, যেমন JWT (JSON Web Tokens), OAuth2, বা Basic Authentication। এই গেটওয়ে সার্ভিসে গেটওয়ে লেভেলে সিকিউরিটি নিশ্চিত করার পাশাপাশি ক্লায়েন্ট সাইডে সিকিউরিটি হ্যান্ডল করার জন্য কিছু কনফিগারেশন করা যায়।

Spring Cloud Gateway Setup

1. Spring Cloud Gateway Setup

প্রথমে, আপনার Spring Boot অ্যাপ্লিকেশনটি Spring Cloud Gateway হিসেবে কনফিগার করতে হবে।

ডিপেন্ডেন্সি যোগ করা:

pom.xml ফাইলে নিচের ডিপেন্ডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-client</artifactId>
</dependency>

2. Gateway Configuration

application.yml বা application.properties ফাইলে Spring Cloud Gateway কনফিগারেশন করুন, যাতে API রুটিং এবং সিকিউরিটি সিস্টেম ঠিকভাবে কাজ করে।

spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/users/**
          filters:
            - AddRequestHeader=X-Request-Foo, Bar
            - AddResponseHeader=X-Response-Foo, Baz
      # Example of security configuration
      security:
        oauth2:
          client:
            registration:
              google:
                client-id: YOUR-CLIENT-ID
                client-secret: YOUR-CLIENT-SECRET
                scope: profile, email
                redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
                authorization-grant-type: authorization_code
                client-name: Google
            provider:
              google:
                authorization-uri: https://accounts.google.com/o/oauth2/auth
                token-uri: https://oauth2.googleapis.com/token
                user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

এই কনফিগারেশনটি Spring Cloud Gateway-এ OAuth2-এর মাধ্যমে ক্লায়েন্ট সাইড সিকিউরিটি চালু করে, এবং গুগল OAuth2 প্রোভাইডার ব্যবহার করে ইউজারের লগইন এবং অথোরাইজেশন সেটআপ করে।


3. Spring Cloud Gateway with Client-Side Security Integration (OAuth2)

ক্লায়েন্ট-সাইড সিকিউরিটির জন্য, OAuth2 সিকিউরিটি ব্যবহার করার মাধ্যমে Spring Cloud Gateway অ্যাপ্লিকেশন সুরক্ষিত করা যেতে পারে। নিচে OAuth2 সিকিউরিটি ইন্টিগ্রেশন এর উদাহরণ দেওয়া হলো:

OAuth2 Client Setup

Spring Cloud Gateway ক্লায়েন্ট হিসেবে OAuth2 এর সাহায্যে API কলগুলির সিকিউরিটি নিশ্চিত করতে, OAuth2 Client Configuration করতে হয়। spring-security-oauth2-client ডিপেনডেন্সি যুক্ত করুন এবং application.yml ফাইলে সঠিক কনফিগারেশন দিন।

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR-CLIENT-ID
            client-secret: YOUR-CLIENT-SECRET
            scope: profile, email
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            client-name: Google
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

4. Spring Security Configuration with OAuth2

OAuth2LoginAuthenticationFilter ব্যবহার করে Spring Security এর সাহায্যে সিকিউরিটি কনফিগার করতে হবে। এই ফিল্টার ক্লায়েন্ট সাইডে সিকিউরিটি ভ্যালিডেশন করবে।

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Sso;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
@EnableOAuth2Sso
public class SecurityConfig {

    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/login/**", "/error", "/oauth2/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .oauth2Login(); // Enable OAuth2 login

        return http.build();
    }
}

এটি OAuth2 সিকিউরিটি সিস্টেম তৈরি করবে যা গুগল বা অন্য OAuth2 প্রোভাইডার দ্বারা অ্যাক্সেস কন্ট্রোল নিশ্চিত করবে।


5. API Gateway সিকিউরিটি: JWT (JSON Web Token)

Spring Cloud Gateway এর সাথে JWT ব্যবহার করে সিকিউরিটি ইন্টিগ্রেশন করার জন্য, আপনাকে কিছু ফিল্টার এবং স্ট্র্যাটেজি কনফিগার করতে হবে।

JWT Filter Creation:

একটি কাস্টম ফিল্টার তৈরি করুন যা JWT টোকেন যাচাই করবে এবং নিরাপদ API রিকোয়েস্ট অনুমোদন করবে।

import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.security.oauth2.jwt.JwtDecoder;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;

@Component
public class JwtTokenFilter implements WebFilter {

    private final JwtDecoder jwtDecoder;

    public JwtTokenFilter(JwtDecoder jwtDecoder) {
        this.jwtDecoder = jwtDecoder;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        String token = exchange.getRequest().getHeaders().getFirst("Authorization");

        if (token != null && token.startsWith("Bearer ")) {
            String jwtToken = token.substring(7);
            Jwt jwt = jwtDecoder.decode(jwtToken); // Validate and decode JWT token

            // Further processing can be done here, e.g., setting user details in SecurityContext
        }
        return chain.filter(exchange);
    }
}

JWT Filter Integration in Gateway

এই ফিল্টারটি Spring Cloud Gateway এর রুট ফিল্টার হিসেবে যুক্ত করা যাবে। এইভাবে আপনি API গেটওয়ে লেভেলে সিকিউরিটি নিশ্চিত করতে পারবেন।

spring:
  cloud:
    gateway:
      filters:
        - name: JwtTokenFilter

6. Full Example (OAuth2 with Gateway)

application.yml-এ OAuth2 সেটআপ:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR-CLIENT-ID
            client-secret: YOUR-CLIENT-SECRET
            scope: profile, email
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            client-name: Google
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/users/**

SecurityConfig.java:

@Configuration
@EnableWebSecurity
@EnableOAuth2Sso
public class SecurityConfig {

    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/login/**", "/error", "/oauth2/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .oauth2Login();

        return http.build();
    }
}

উপসংহার

  • Spring Cloud Gateway ব্যবহার করে ক্লায়েন্ট সাইড সিকিউরিটি ইন্টিগ্রেশন অনেক সহজ এবং কার্যকরী।
  • OAuth2 বা JWT ব্যবহার করে গেটওয়ে লেভেলে নিরাপত্তা নিশ্চিত করা যায়।
  • Spring Security-এর মাধ্যমে OAuth2 ক্লায়েন্ট সাইড সিকিউরিটি ইন্টিগ্রেশন সহজেই করা সম্ভব।
  • JWT ফিল্টার ব্যবহার করে আপনার API গেটওয়ে লেভেলে নিরাপত্তা নিয়ন্ত্রণ এবং যাচাই করা যেতে পারে।

এইভাবে, Spring Cloud Gateway এর সাথে ক্লায়েন্ট-সাইড সিকিউরিটি ইন্টিগ্রেশন করতে পারেন, যা নিরাপদ এবং স্কেলেবল API গেটওয়ে প্রদান করবে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion